#ifndef NANE_SERIALIZESYSTEM_H
#   define NANE_SERIALIZESYSTEM_H

#   include "nane/SerializeSystem/ISerializeSystem.h"
#   include "nane/core/SubSystem.h"
#   include "nane/core/crt/FileSystem.h"

#   include "nane/SerializeSystem/SerializationProtocol.h"
#   include "nane/SerializeSystem/DeserializationProtocol.h"

namespace nane
{

    class SerializeSystem
        : public SubSystem<ISerializeSystem>
    {
    public:
        SerializeSystem();
        ~SerializeSystem();
        
    public:
        bool Deserialize( const InputPtr& _input, ISerializationProtocol* _protocol, byte* _buffer, uint32 _bufferSize );
        SerializationProtocol CreateProtocol( const OutputPtr& _output );

    public:
        class Implementation;
        Implementation* m;
    };
}   // namespace nane

#endif // NANE_SERIALIZESYSTEM_H
